package com.rbac.modules.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rbac.modules.system.entity.SysPermission;
import com.rbac.modules.system.dto.PermissionDTO;
import com.rbac.modules.system.dto.PermissionQueryDTO;
import java.util.List;

public interface SysPermissionService extends IService<SysPermission> {
    Page<SysPermission> page(Page<SysPermission> page, PermissionQueryDTO query);
    
    void create(PermissionDTO dto);
    
    void update(PermissionDTO dto);
    
    void delete(Long id);
    
    List<SysPermission> listByRoleId(Long roleId);
    
    List<SysPermission> listByUserId(Long userId);
    
    List<SysPermission> tree();
    
    void updateStatus(Long id, Integer status);
    
    boolean existsByCode(String code);

    /**
     * 获取用户的权限编码列表
     * @param userId 用户ID
     * @return 权限编码列表
     */
    List<String> getPermissionCodesByUserId(Long userId);

    /**
     * 获取当前用户的权限树结构
     * 只返回菜单类型的权限，用于前端动态路由
     */
    List<SysPermission> getCurrentUserPermissionTree();
} 